Learn R Programming

secr (version 2.9.4)

sim.popn details: Specifying a Dynamic Population

Description

sim.popn can simulate a multi-session population with known between-session survival, recruitment and movement probabilities. The parameter settings to achieve this are passed to sim.popn in its `details' argument. Components of `details' that are relevant to turnover are described below; see sim.popn for others. Multi-session populations are generated in sim.popn whenever its argument `nsession' is greater than 1. If details$lambda remains NULL (the default) then the population for each successive session is generated de novo from the given density model (model2D, D etc.). If a value is specified for details$lambda then only the first population is generated de novo; remaining populations are generated iteratively with probabilistic mortality, recruitment and movement as described here.

Turnover components of <code>sim.popn</code> details argument

lll{ Component Description Default phi per capita survival rate $\phi$ 0.7 survmodel probability model for number of survivors "binomial" lambda finite rate of increase $\lambda = N_{t+1} / N_t$ none recrmodel probability model for number of recruits "poisson" sigma.m spatial scale of movement kernel 0 wrap logical: should toroidal wrapping be applied? TRUE }

Survival

Survival is usually thought of as a Bernoulli process (outcome 0 or 1 for each individual) so the number of survivors $S$ is a binomial variable (survmodel = "binomial"). Another approach is to fix the proportion surviving, but this can be done exactly only when $\phi N$ is an integer. A (slightly ad hoc) solution is to randomly choose between the two nearest integers with probability designed in the long term (over many sessions) to give the required $\phi$ (survmodel = "discrete").

Population growth and recruitment

Per capita recruitment ($\gamma$) is the difference between lambda and phi ($\gamma = \lambda - \phi$), which must be non-negative (phi > lambda causes an error). The number of recruits B is a random variable whose probability distribution is controlled by details$recrmodel: ll{ Value Probability model "constantN" Exact replacement of animals that die (B = $N_t - S$) "binomial" Binomial number of recruits (B ~ bin($N_t, \gamma$) "poisson" Poisson number of recruits (B ~ pois($\gamma N_t$)) "discrete" Minimum-variance number of recruits (see Survival) } In the case of binomial recruitment there is a maximum of one recruit per existing individual, so lambda

Movement

Individuals may shift their home range centre between sessions. Movement probability is governed by a circular bivariate normal kernel with scale sigma.m. If movement takes an animal across the boundary of the arena then by default it is toroidally wrapped i.e. re-joins the population on the opposing edge. No movement is applied when sigma.m = 0.

See Also

sim.popn

Examples

Run this code
par (mfrow = c(2,3), mar = c(1,1,1,1))

## birth and death only
grid <- make.grid(nx = 7, ny = 4, detector = 'proximity', spacing = 10)
pop <- sim.popn (Nbuffer = 100, core = grid, nsession = 6,    
    details = list(lambda = 0.8, phi = 0.6, sigma.m = 0))
sapply(pop, nrow)  ## how many individuals?
plot(pop)

## movement only
pop2 <- sim.popn (Nbuffer = 100, core = grid, nsession = 6,    
    details = list(lambda = 1, phi = 1, sigma.m = 10, wrap = TRUE))
pop3 <- sim.popn (Nbuffer = 100, core = grid, nsession = 6,    
    details = list(lambda = 1, phi = 1, sigma.m = 10, wrap = FALSE))
sapply(pop2, nrow)  ## how many individuals?
plot(pop2)

## show effect of toroidal wrapping --
tracks <- function (pop, ...) {
    rn <- unlist(lapply(pop, rownames))
    plot(pop[[1]], pch = 16)
    for (i in unique(rn))
       lines(t(sapply(pop, '[', i, 1:2)), ...)
}
par (mfrow=c(1,2))
tracks(pop2, type = 'o')
tracks(pop3, type = 'o')

Run the code above in your browser using DataLab